/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.asportoonline.context;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
 *
 * @author Valerio Costmagna <costamagna.valerio@gmail.com>
 */
public class RequestObject {
        protected Map request = new HashMap();
	protected Map session = new HashMap();

	protected String requestCommmand;

	protected RequestObject() {

	}

	/**
	 * Imposta una chiave-valore nella richiesta corrente
	 * @param key
	 * @param value
	 */
	public void setValue(String key, Object value)
	{
		request.put(key,value);
	}

	/**
	 * Imposta chiave-valore nella sessione corrente
	 * @param key
	 * @param value
	 */
	public void setValueInSession(String key, Object value)
	{
		session.put(key,value);
	}
        public void setValueAll(String key, Object value){
            setValueInSession(key,value);
               setValue(key,value);
        }
        public void invalida(String key){
                System.out.println("Sto rimuovendo: "+key);
                session.remove(key);
                session.clear();
                if(findValueSession(key)) System.out.println("porcodio");
//                System.out.println("debug: "+session.get("username").toString());
             
        }
           public boolean findValueSession(String key){
               Set ses = getSessionKeys();
                Iterator i = ses.iterator();
                      while(i.hasNext()){
           
                            if(key.equals(i.next().toString()))
                                return true;
                        
          
       }
                        return false;
           }
	/**
	 * Ritorna il valore associato ad una chiave, cercandolo prima nella
	 * richiesta corrente e poi nella sessione
	 * @param key
	 * @return
	 */
           	public Object getValue(String key)
	{
		Object value = request.get(key);

	if (value == null)
			return value = session.get(key);

		if (value instanceof Object[])
			value = ((Object[]) value)[0];

		return value;
	}
	public Object getValueRequest(String key)
	{
		Object value = request.get(key);

	//if (value == null)
	//		return value = session.get(key);

		if (value instanceof Object[])
			value = ((Object[]) value)[0];

		return value;
	}

        public Object getValueSession(String key){
            Object value = session.get(key);
            return value;
        }
	/**
	 * Ritorna tutte le chiavi a cui sono associati dei valori
	 * nella richiesta corrente
	 * @return
	 */
	public Set getRequestKeys()
	{
		return request.keySet();
	}

	/**
	 * Ritorna tutte le chiavi a cui sono associati dei valori
	 * nella sessione corrente
	 * @return
	 */
	public Set getSessionKeys()
	{
		return session.keySet();
	}

        public void printAll(){
             Set ses = getSessionKeys();
                Iterator i = ses.iterator();
                      while(i.hasNext()){
                          System.out.println(i.toString());
                      }
           
                            
        }
	public String getRequestCommmand() {
		return requestCommmand;
	}

	public void setRequestCommmand(String requestCommmand) {
		this.requestCommmand = requestCommmand;
	}

}
